package com.lwl.blue.seven.dto;

import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.Digits;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 创建合同商品明细DTO
 * @author system
 * @since 2025-09-17
 */
@Data
public class Contract7CreateItemDTO {

    /**
     * 商品ID（必填）
     */
    @NotNull(message = "商品不能为空")
    private Long productId;

    /**
     * 商品名称（必填）
     */
    @NotBlank(message = "商品名称不能为空")
    private String productName;

    /**
     * 商品单位（必填）
     */
    @NotBlank(message = "商品单位不能为空")
    private String productUnit;

    /**
     * 商品单价（必填）
     */
    @NotNull(message = "商品单价不能为空")
    @DecimalMin(value = "0.01", message = "商品单价必须大于0")
    @Digits(integer = 10, fraction = 4, message = "商品单价格式不正确，整数位不超过10位，小数位不超过4位")
    private BigDecimal productPrice;

    /**
     * 商品数量（必填）
     */
    @NotNull(message = "商品数量不能为空")
    @DecimalMin(value = "0.01", message = "商品数量必须大于0")
    @Digits(integer = 10, fraction = 4, message = "商品数量格式不正确，整数位不超过10位，小数位不超过4位")
    private BigDecimal productQuantity;

    /**
     * 商品总金额（自动计算）
     */
    private BigDecimal contractAmount;

    /**
     * 交货地点
     */
    private String deliveryLocation;

    /**
     * 交货日期
     */
    private Date deliveryDate;

    /**
     * 商品编号
     */
    private String productCode;

    /**
     * 商品属性1
     */
    private String productAttr1;

    /**
     * 商品属性2
     */
    private String productAttr2;

    /**
     * 商品属性3
     */
    private String productAttr3;

    /**
     * 商品属性4
     */
    private String productAttr4;

    /**
     * 商品属性5
     */
    private String productAttr5;

    /**
     * 商品属性6
     */
    private String productAttr6;

    /**
     * 商品属性7
     */
    private String productAttr7;

    /**
     * 商品属性8
     */
    private String productAttr8;

    /**
     * 商品属性9
     */
    private String productAttr9;

    /**
     * 商品属性10
     */
    private String productAttr10;

    /**
     * 包装数量
     */
    private BigDecimal packQuantity;

    /**
     * 包装单位
     */
    private String packUnit;

    /**
     * 包装换算比率
     */
    private String packRate;

    /**
     * 统计|原币币种
     */
    private String currency;

    /**
     * 统计|换算比例
     */
    private BigDecimal currencyRate;

    /**
     * 合同|数量
     */
    private BigDecimal contractQuantity;

    /**
     * 合同|单位
     */
    private String contractUnit;

    /**
     * 合同|单价
     */
    private BigDecimal contractPrice;

    /**
     * 合同|是否暂定价（1是，0否）
     */
    private Integer isTentativePrice;

    /**
     * 外部采购订单明细核销内码
     */
    private Long externalContractItemWriteoffId;

    /**
     * 外部采购订单明细外码
     */
    private String externalContractItemCode;

    /**
     * 外部采购订单核销内码
     */
    private Long externalContractWriteoffId;

    /**
     * 外部采购订单核销外码
     */
    private String externalContractCode;
}
